package chapter04.s04interface.example12;

//一个子类可以既实现接口,又继承抽象类

// 定义接口 Animal
interface Animal {
    String NAME = "牧羊犬";

    void shout();                // 定义抽象方法shout()

    void info();                 // 定义抽象方法info()
}

// 定义抽象类 Action
abstract class Action {
    public abstract void eat();       // 定义抽象方法eat()
}

// 定义Dog类 继承Action抽象类 实现Animal接口
class Dog extends Action implements Animal {
    // 重写Action抽象类中的抽象方法eat()
    public void eat() {
        System.out.println("喜欢吃骨头");
    }

    // 重写Animal接口中的抽象方法shout()
    public void shout() {
        System.out.println("汪汪...");
    }

    // 重写Animal接口中的抽象方法info()
    public void info() {
        System.out.println("名称：" + NAME);
    }
}

// 定义测试类
class Example12 {
    public static void main(String[] args) {
        Dog dog = new Dog();            // 创建Dog类的实例对象
        dog.info();                    // 调用Dog类中重写的info()方法
        dog.shout();                    // 调用Dog类中重写的shout()方法
        dog.eat();                        // 调用Dog类中重写的eat()方法
    }
}
